Express.js 框架入门

1. 概述

Express.js 是一个基于 Node.js 的快速、开放且极简的 Web 框架。它为 Web 和移动应用提供了强大的功能,是构建 RESTful API 的首选框架之一。本教程将带你从零开始学习 Express.js,包括环境搭建、基本路由、中间件的使用以及如何创建一个简单的 Web 应用。

2. 环境搭建

2.1 安装 Node.js

首先,确保你已经安装了 Node.js。你可以通过以下命令检查是否已安装:

node -v

如果没有安装,请访问 Node.js 官网 下载并安装最新版本。

2.2 初始化项目

创建一个新的项目目录并初始化 npm:

mkdir my-express-app
cd my-express-app
npm init -y

2.3 安装 Express.js

使用 npm 安装 Express.js:

npm install express

3. 创建第一个 Express 应用

3.1 编写基本代码

在项目根目录下创建一个 index.js 文件,并编写以下代码:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

3.2 运行应用

在终端中运行以下命令启动应用:

node index.js

打开浏览器并访问 http://localhost:3000,你应该会看到 "Hello World!" 的输出。

4. 路由和中间件

4.1 路由

路由用于确定应用如何响应客户端的请求。Express 提供了多种方法来定义路由,例如 app.get, app.post, app.put, app.delete 等。

app.get('/about', (req, res) => {
  res.send('About page');
});

app.post('/submit', (req, res) => {
  res.send('Form submitted');
});

4.2 中间件

中间件是 Express 的核心概念之一。它是一个函数,可以访问请求对象 (req)、响应对象 (res) 以及下一个中间件函数 (next)。

app.use((req, res, next) => {
  console.log('Time:', Date.now());
  next();
});

4.3 使用中间件处理请求

你可以使用中间件来处理请求,例如解析 JSON 数据:

app.use(express.json());

app.post('/data', (req, res) => {
  console.log(req.body);
  res.send('Data received');
});

5. 模板引擎

Express 支持多种模板引擎,如 EJS、Pug 等。这里我们以 EJS 为例。

5.1 安装 EJS

npm install ejs

5.2 配置模板引擎

在 index.js 中配置 EJS:

app.set('view engine', 'ejs');
app.set('views', './views');

5.3 创建视图文件

在项目根目录下创建一个 views 文件夹,并在其中创建一个 index.ejs 文件:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Express with EJS</title>
</head>
<body>
  <h1>Hello, <%= name %>!</h1>
</body>
</html>

5.4 渲染视图

在路由中渲染视图:

app.get('/greet/:name', (req, res) => {
  res.render('index', { name: req.params.name });
});

访问 http://localhost:3000/greet/John,你应该会看到 "Hello, John!" 的输出。

6. 实践练习

6.1 创建一个简单的博客系统

  1. 创建一个 Express 应用。
  2. 使用 EJS 作为模板引擎。
  3. 创建路由来显示博客文章列表和单篇文章。
  4. 使用中间件来处理请求数据。

6.2 代码示例

const express = require('express');
const app = express();
const port = 3000;

app.set('view engine', 'ejs');
app.set('views', './views');

const posts = [
  { id: 1, title: 'First Post', content: 'This is the first post.' },
  { id: 2, title: 'Second Post', content: 'This is the second post.' }
];

app.get('/', (req, res) => {
  res.render('index', { posts });
});

app.get('/post/:id', (req, res) => {
  const post = posts.find(p => p.id === parseInt(req.params.id));
  res.render('post', { post });
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

在 views 文件夹中创建 index.ejs 和 post.ejs 文件来渲染博客列表和单篇文章。

7. 总结

通过本教程,你已经学会了如何使用 Express.js 创建一个简单的 Web 应用,包括路由、中间件和模板引擎的使用。Express.js 是一个非常强大的框架,适合构建各种规模的 Web 应用。继续深入学习,你将能够构建更复杂的应用,并掌握更多的 Express.js 高级特性。

8. 下一步

  • 学习如何使用 Express.js 构建 RESTful API。
  • 探索更多的中间件和模板引擎。
  • 深入了解 Express.js 的安全性和性能优化。

希望本教程对你有所帮助,祝你在 Express.js 的学习旅程中取得成功!